<html>
    <head>
        <title>渲染小部件</title>
    </head>
    <body>
        <script>
             /*
                       二、渲染小部件  Render the Widget

                                    渲染小部件是非常标准的。在razor视图/页面中使用Component.InvokeAsync方法，就像您对任何视图组件所做的那样。

                                    eg:
                                         @await Component.InvokeAsync("MySimpleWidget")
                                         @await Component.InvokeAsync(typeof(MySimpleWidgetViewComponent))

                                    第一种方法使用小部件名称，而第二种方法使用视图组件类型。


                                    1、带参数的小部件   Widgets with Parameters

                                            ASP.NETCore的视图组件系统允许您接受视图组件的参数。

                                            下面的示例视图组件接受startDate和endDate并使用这些参数从服务中检索数据。

                                                    using System;
                                                    using System.Threading.Tasks;
                                                    using Microsoft.AspNetCore.Mvc;
                                                    using Volo.Abp.AspNetCore.Mvc;
                                                    using Volo.Abp.AspNetCore.Mvc.UI.Widgets;

                                                    namespace DashboardDemo.Web.Pages.Shared.Components.CountersWidget
                                                    {
                                                        [Widget]
                                                        public class CountersWidgetViewComponent : AbpViewComponent
                                                        {
                                                            private readonly IDashboardAppService _dashboardAppService;

                                                            public CountersWidgetViewComponent(IDashboardAppService dashboardAppService)
                                                            {
                                                                _dashboardAppService = dashboardAppService;
                                                            }

                                                            public async Task<IViewComponentResult> InvokeAsync(
                                                                DateTime startDate, DateTime endDate)
                                                            {
                                                                var result = await _dashboardAppService.GetCountersWidgetAsync(
                                                                    new CountersWidgetInputDto
                                                                    {
                                                                        StartDate = startDate,
                                                                        EndDate = endDate
                                                                    }
                                                                );

                                                                return View(result);
                                                            }
                                                        }
                                                    }

                                           现在，您需要传递一个匿名对象来传递参数，如下所示：

                                                    @await Component.InvokeAsync("CountersWidget", new
                                                    {
                                                        startDate = DateTime.Now.Subtract(TimeSpan.FromDays(7)),
                                                        endDate = DateTime.Now
                                                    })    
                                           
                   */
        </script>
    </body>
</html>